package com.efast.cafe.portal.dao.api;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import com.efast.cafe.portal.bean.api.PortalApiProjectDto;
import com.efast.cafe.portal.bean.api.PortalApiSystemBean;
import com.efast.cafe.portal.entity.api.PortalApiSystem;

/**
 * <p>
 * 接口
 * </p>
 * <p>
 * Table: portal_api_system - 所属系统定义
 * </p>
 *
 * @since ${.now}
 */

public interface PortalApiSystemDao {

	/**
	 * 新增apiSystem
	 * 
	 * @Date : 2017年8月8日
	 * @param apiSystem
	 * @return
	 */
	public int insertApiSystem(PortalApiSystemBean portalApiSystemBean);

	/**
	 * 修改apiSystem
	 * 
	 * @param apiSystem
	 */
	public void updateApiSystem(PortalApiSystemBean portalApiSystemBean);

	/**
	 * 删除系统
	 * 
	 * @param id
	 *            删除系统的id
	 * @param user
	 *            操作用户
	 */
//	@SaveOrUpdateOrDelControl(companyCodeControl = false)
	public void deleteApiSystemById(@Param(value="id")Integer id);

	/**
	 * 复制系统
	 * 
	 * @param portalApiSystem
	 * @return int
	 * @Author Administrator
	 * @Date 2017年8月14日
	 */
	public int copyApiSystem(PortalApiSystemBean portalApiSystemBean);

	/**
	 * 查看项目下的所有系统的(只返回最新版本)
	 * 
	 * @param systemId
	 * @return List<PortalApiSystemBean>
	 * @Author Administrator
	 * @Date 2017年8月19日
	 */
	public List<PortalApiSystemBean> queryPortalApiSystemsBy(@Param("projectId") Integer projectId,
			@Param("status") Integer status,@Param("systemName") String systemName);

	/**
	 * 查询系统的所有不同版本
	 * 
	 * @param projectId
	 * @param systemId
	 * @param status
	 *            如果为null查询所有状态，否则查询指定状态的系统
	 * @return List<PortalApiSystemBean>
	 * @Author Administrator
	 * @Date 2017年8月22日
	 */
	public List<PortalApiSystemBean> queryApiSystemVersions(@Param("projectId") Integer projectId,
			@Param("systemId") Integer systemId, @Param("status") Integer status);

	/**
	 * 判断系统版本是否已经存在
	 * 
	 * @param portalApiSystemBean
	 * @return int
	 * @Author Administrator
	 * @Date 2017年8月22日
	 */
	public Integer apiSystemVersionIsExist(PortalApiSystemBean portalApiSystemBean);

	/**
	 * 查询项目indentifier是否重复
	 * 
	 * @param indentifier 标识符
	 * @param projectId 项目id  
	 * @param systemId 系统id
	 *            如果系统存在，则排除改系统
	 * @return int
	 * @Author Administrator
	 * @Date 2017年9月1日
	 */
	public Integer apiSystemIndentifierIsExist(@Param("indentifier") String indentifier,
			@Param("projectId") Integer projectId, @Param("systemId") Integer systemId);
	
	
	public PortalApiSystem queryById(@Param("id") Integer id);
}